package rescsa.gob.pe.seguridad.dao;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import javax.sql.DataSource;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import rescsa.gob.pe.constants.PgSqlQuerys;
import rescsa.gob.pe.constants.RowMapperConstants;
import rescsa.gob.pe.seguridad.bean.UsuarioBEAN;

@Repository
public class UsuarioDAO {

	private SimpleJdbcTemplate simpleJdbcTemplate;
    private JdbcTemplate jdbcTemplate;
	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
	
	@Autowired
	public void init(DataSource dataSource) {
		this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
		this.jdbcTemplate=new JdbcTemplate(dataSource);
		this.namedParameterJdbcTemplate=new NamedParameterJdbcTemplate(dataSource);
	}
	
	SqlSessionFactory sqlMapper = null;//obtiene la configuracion del archivo
	{
		String archivo = "ConfiguracionIbatis.xml";//abrea la configuracion
		try {
			Reader reader = Resources.getResourceAsReader(archivo);
			sqlMapper = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	@SuppressWarnings("unchecked")
	public List<UsuarioBEAN> listar(UsuarioBEAN user){
		StringBuffer sqlb = new StringBuffer(PgSqlQuerys.OBTENER_USUARIO);
		
//		if(user.getNombre_usuario() != null){
//			sqlb.append( " and  nombre_usuario= '"+user.getNombre_usuario()+"' ");
//		}
//		if(user.getContrasenia_usuario() != null){
//			sqlb.append( " and contrasenia_usuario= '"+user.getContrasenia_usuario()+"' ");
//		}
		
		if(user.getN_usuario() != null){
			sqlb.append( " and  n_usuario= '"+user.getN_usuario()+"' ");
		}
		if(user.getN_contrasenia() != null){
			sqlb.append( " and n_contrasenia= '"+user.getN_contrasenia()+"' ");
		}
		
		
		
		String sql = sqlb.toString();
		
		return this.jdbcTemplate.query(sql, new RowMapperConstants.UsuarioMapper());
	}
	
	
	
	
	
}
